﻿#define _CRT_SECURE_NO_WARNINGS 1
//不允许创建临时变量，交换两个整数的内容
//方法1
//#include<stdio.h>
//int main()
//{
//    int a=20, b=30;
//    a = a ^ b;
//    b = a ^ b;
//    b = a ^ b;
//    printf("a=%d,b=%d\n", a, b);
//    return 0;
//}
//方法2
//#include <stdio.h>
//int main()
//{
//    int a=20, b=30;
//    a = a + b;
//    b = a - b;
//    a = a - b;
//    printf("a=%d,b=%d\n", a, b);
//    return 0;
//}
/*

输入一个整数 n ，输出该数32位二进制表示中1的个数。其中负数用补码表示。
数据范围：- 2^31 < = n < = 2^31-1 即范围为:
-2147483648<= n <= 2147483647−2147483648<=n<=2147483647*/
//方法1
//#include <stdio.h>
//int main()
//{
//    int a=0,count=0,n;
//   scanf("%d", &n);
//    for (a = 0; a < 32; a++)
//    {
//        if (n & (1 << a))
//            count++;
//   }
//    printf("%d", count);
//    return 0;
//}
////方法2
//#include <stdio.h>
//int main()
//{
//    int num, count = 0;
//    scanf("%d", &num);
//    while (num)
//    {
//        count++;
//        num = num & (num - 1);//直到num为0结束
//    }
//    printf("%d", count);
//    return 0;
//}
#include <stdio.h>
int input(int count, int n)
{
    int a = 0;
    for (a = 0; a < 32; a++)
    {
        if (n & (1 << a))
            count++;
    }
    return count;

}
int main()
{
    int count = 0, coun, n;
    scanf("%d", &n);
    coun = input(count, n);

    printf("%d", coun);
    return 0;
}